↓このプログラムはもちろんOK。
using System;
class Program
{
static void Main(string[] args)
{
decimal a = 1.2m;
Console.WriteLine("{0}", a.ToString("0.00"));
}
}
しかし、以下のように書き換えるとコンパイル不可。
しかし、以下のように書き直せばdecimal?のままでもコンパイルOK。(もちろん、string.Formatを使わないで直接WriteLineで書式指定してもOK)
using System;
class Program
{
static void Main(string[] args)
{
decimal? a = 1.2m;
Console.WriteLine("{0}", string.Format("{0:0.00}",a));
}
}
感想 §
ここにもnull許容型の非互換性が残りますね。(まあnull値の場合に書式は決められないわけですけど)
挙動に気付いたおがたんさんに感謝。